<?php
  /** Classe de fonctionnalité permetant de s'identifier sur le système 
   * Auteur : Sebastian Mosser
   */

class fLogin extends aFeature {

   public function __construct() {
      $this->_acl = new AccessControlList();
      // On désactive le controle d'accès pour cette fonctionnalité : normal ;-)
      $this->_acl->setGranted(AccessControlList::$EVERYBODY_ALLOWED);
   }

   public static function getTocEntry() {
      return "Connexion";
   }

	public static function getRealName() {
		return "Authentification sur le système Balloon";
	}
	
	public static function getSemantic() {
		$res  = "Cette fonctionnalité permet de s'authentifier sur le système. ";
		$res .= "Elle permet la vérification des contrôles d'accès et ouvre les portes des autres services !";
		return $res;
	}
   

   protected function run() {
   	// On regarde si le script a été chargé par un formulaire :
   	if (empty($_POST["action"]))
   		return $this->startDisplay();
   	else
   		return $this->process();
   }	
   
   private function loginForm() {
   	$loginForm = new File("files/login_form.html");
   	return $loginForm->readAll();
   }

   private function logoutForm() {
   	$logoutForm = new File("files/logout_form.html");
   	return $logoutForm->readAll();
   }

   private function logoutPage() {
   	$logout = new File("files/logout_page.html");
   	return $logout->readAll();
   }

   private function startDisplay() {
   	if (Login::isSomeoneLoggedIn())
   		return $this->logoutForm();
   	else
   		return $this->loginForm();
   }

   private function okPage() {
   	$pageOk = new File("files/ok.html");
   	$page = $pageOk->readAll();
   	$page .= "<h2>Informations de Connexion </h2>";
   	$page .= "<p> Balloon vous a automatiquement placé dans la dernière saison présente dans le système.</p>";
   	$page .= User::read(Login::getLoginId())->displayLong();
   	return $page;
   }

   private function koPage() {
   	$pageKo = new File("files/ko.html");
   	return $pageKo->readAll();
   }
   
   private function process() {
   	//$passwd = $_POST["passwd"];
   	//$login = $_POST["login"];
   	//$action = $_POST["action"];
   	$passwd = PropRetriever::getProp($_POST,"passwd");
   	$login = PropRetriever::getProp($_POST,"login");
   	$action = PropRetriever::getProp($_POST,"action");
   	
   	if ($action == "login") {
    		if (Login::isGranted($login,sha1($passwd)))
   			return $this->okPage();
   		else
   			return $this->koPage();
   	}
   	else {
   		Login::logout();
   		return $this->logoutPage();
   	}
   }   
   
	
}

?>